The present invention relates to device driver software used in computer operating systems. More particularly, the invention relates to a method for re-using device drivers, which were initially developed for verification of specific device designs in a development phase of the designs, as device drivers in an operating system which uses physical implementations of the devices.
The complexity and sophistication of present-day integrated circuit (IC) chips have advanced significantly over those of early chip designs. Where formerly a chip might embody relatively simple electronic logic blocks effected by interconnections between logic gates, currently chips can include combinations of complex, modularized IC designs often called “cores” which together constitute an entire “system-on-a-chip”, or SOC.
In general, IC chip development includes a design phase and a verification phase for determining whether a design works as expected. The verification phase has moved increasingly toward a software simulation approach to avoid the costs of first implementing designs in hardware to verify them.
Typically, in verifying a design, a simulator is used. Here, “simulator” refers to specialized software whose functions include accepting software written in a hardware description language (HDL) such as Verilog or VHDL which models a circuit design (for example, a core as describe above), and using the model to simulate the response of the design to stimuli which are applied by a test case to determine whether the design functions as expected. The results are observed and used to de-bug the design
In order to achieve acceptably bug-free designs, verification software must be developed for applying a number of test cases sufficient to fully exercise the design in simulation. In the case of SOC designs, the functioning of both the individual cores as they are developed, and of the cores interconnected as a system must be verified. Moreover, a complete SOC design usually includes an embedded processor core; simulation which includes a processor core tends to require an inordinate amount of time and computing resources, largely because the processor is usually the most complex piece of circuitry on the chip and interacts with many other cores.
It can be appreciated from the foregoing that verification of an SOC represents a substantial investment in time and money, due to the necessity of developing and executing software for performing the numerous test cases required to fully exercise the design. Accordingly, the ability to capitalize on this investment by re-using the verification software with general operating system software (i.e., operating system software used in, for example, general business, technical or scientific applications as opposed to simulation) would offer significant benefits. For example, typically SOC customers want to concentrate on their own “value-added” software, that is, software that they need to develop for their particular applications. Verification software that handled low-level, standard operating system functions such as device I/O, which was furthermore “tried-and-true” through the verification process, would provide customers with significantly software development burdens.